home *** CD-ROM | disk | FTP | other *** search
/ Programming Languages Suite / ProgramD2.iso / Borland / Borland C++ V5.02 / GDIMETA.PAK / GLOBALS.H < prev    next >
C/C++ Source or Header  |  1997-05-06  |  9KB  |  212 lines

  1. // THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
  2. // ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
  3. // THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
  4. // PARTICULAR PURPOSE.
  5. //
  6. // Copyright (C) 1993-1995  Microsoft Corporation.  All Rights Reserved.
  7. //
  8. // PURPOSE:
  9. //    Contains declarations for all globally scoped names in the program.
  10. //
  11.  
  12. //-------------------------------------------------------------------------
  13. // Product identifier string defines
  14.  
  15. //  **TODO** Change these strings to the name of your application.
  16.  
  17.     #define APPNAME       GDIMeta
  18.     #define ICONFILE      GDIMeta.ICO
  19.     #define SZAPPNAME     "GDIMeta"
  20.     #define SZDESCRIPTION "GDI MetaFile Example Application"
  21.     #define SZABOUT       "About GDI Meta"
  22.     #define SZVERSION     "Version 4.0"
  23.  
  24.  
  25. //-------------------------------------------------------------------------
  26. // Functions for handling main window messages.  The message-dispatching
  27. // mechanism expects all message-handling functions to have the following
  28. // prototype:
  29. //
  30. //     LRESULT FunctionName(HWND, UINT, WPARAM, LPARAM);
  31.  
  32. // **TODO**  Add message-handling function prototypes here.  Be sure to
  33. //           add the function names to the main window message table in
  34. //           gdimeta.c.
  35.  
  36. LRESULT MsgCommand         (HWND, UINT, WPARAM, LPARAM); // gdimeta.c
  37. LRESULT MsgDestroy         (HWND, UINT, WPARAM, LPARAM);
  38. LRESULT MsgCreate          (HWND, UINT, WPARAM, LPARAM);
  39. LRESULT MsgSize            (HWND, UINT, WPARAM, LPARAM);
  40. LRESULT MsgPaletteChanged  (HWND, UINT, WPARAM, LPARAM);
  41. LRESULT MsgQueryNewPalette (HWND, UINT, WPARAM, LPARAM);
  42. LRESULT MsgQueryEndSession (HWND, UINT, WPARAM, LPARAM);
  43. LRESULT MsgClose           (HWND, UINT, WPARAM, LPARAM);
  44. LRESULT MsgNotify          (HWND, UINT, WPARAM, LPARAM); // toolbar.c
  45. LRESULT MsgTimer           (HWND, UINT, WPARAM, LPARAM); // statbar.c
  46. LRESULT MsgMenuSelect      (HWND, UINT, WPARAM, LPARAM);
  47.  
  48.  
  49. //-------------------------------------------------------------------------
  50. // Functions for handling main window commands--ie. functions for
  51. // processing WM_COMMAND messages based on the wParam value.
  52. // The message-dispatching mechanism expects all command-handling
  53. // functions to have the following prototype:
  54. //
  55. //     LRESULT FunctionName(HWND, WORD, WORD, HWND);
  56.  
  57. // **TODO**  Add message-handling function prototypes here.  Be sure to
  58. //           add the function names to the main window command table in
  59. //           gdimeta.c.
  60.  
  61. LRESULT CmdExit       (HWND, WORD, WORD, HWND);     // gdimeta.c
  62. LRESULT CmdRefresh    (HWND, WORD, WORD, HWND);
  63.  
  64. LRESULT CmdAbout      (HWND, WORD, WORD, HWND);     // about.c
  65.  
  66. LRESULT CmdInfo       (HWND, WORD, WORD, HWND);     // infodlg.c
  67.  
  68. LRESULT CmdDrawMode   (HWND, WORD, WORD, HWND);     // client.c
  69. LRESULT CmdFill       (HWND, WORD, WORD, HWND);
  70. LRESULT CmdCreatePen  (HWND, WORD, WORD, HWND);
  71. LRESULT CmdCreateBrush(HWND, WORD, WORD, HWND);
  72.  
  73. LRESULT CmdFileNew    (HWND, WORD, WORD, HWND);     // file.c
  74. LRESULT CmdFileOpen   (HWND, WORD, WORD, HWND);
  75. LRESULT CmdFileSave   (HWND, WORD, WORD, HWND);
  76. LRESULT CmdFileSaveAs (HWND, WORD, WORD, HWND);
  77.  
  78.  
  79. //-------------------------------------------------------------------------
  80. // Global function prototypes.
  81.  
  82. // **TODO**  Add global function prototypes here.
  83.  
  84. BOOL InitApplication(HINSTANCE, int);               // Init
  85. BOOL CenterWindow(HWND, HWND);                      // Misc
  86. HWND CreateClientWindow(HWND);                      // Client
  87. VOID ClientNewDrawing(VOID);
  88. HENHMETAFILE GetCurrentEMF(VOID);
  89.  
  90. VOID Open(LPSTR, BOOL, HWND);                       // File
  91. VOID SaveAs(LPSTR, HWND);
  92. BOOL QuerySaveFile(HWND);
  93.  
  94. typedef struct tagFILEMAP
  95. {
  96.     HANDLE  hFile;
  97.     HANDLE  hFileMap;
  98.     LPVOID  pFileMap;
  99. } FILEMAP, *PFILEMAP;
  100.  
  101. BOOL MapFileReadOnly(LPCSTR, LPCSTR, PFILEMAP);
  102. BOOL MapFileReadWrite(LPCSTR, LPCSTR, PFILEMAP, DWORD, DWORD);
  103. BOOL CloseFileMapping(PFILEMAP);
  104.  
  105. #define MAKEBOOL(i)         ((BOOL) !!(i))
  106. #define RECTWIDTH(lprc)     ((lprc)->right - (lprc)->left)
  107. #define RECTHEIGHT(lprc)    ((lprc)->bottom - (lprc)->top)
  108.  
  109. char *GetFName(VOID);
  110.  
  111. extern char szFName[256];
  112.  
  113.     // Callback functions.  These are called by Windows.
  114.  
  115. // **TODO**  Add new callback function prototypes here.
  116.  
  117. LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
  118. LRESULT CALLBACK ClientWndProc(HWND, UINT, WPARAM, LPARAM);
  119.  
  120.  
  121. //-------------------------------------------------------------------------
  122. // Global variable declarations.
  123.  
  124. extern HINSTANCE    hInst;          // The current instance handle
  125. extern char         szAppName[];    // The name of this application
  126. extern char         szTitle[];      // The title bar text
  127. extern HWND         hWndClient;     // The Client window
  128. extern HCURSOR      hcursHourGlass; // IDC_WAIT cursor
  129. extern HENHMETAFILE hEMF;           // Current metafile handle
  130. extern BOOL         bModify;        // TRUE if current doc has been modified
  131.  
  132. // palette-related globals
  133. extern HPALETTE  hPalette;       // App's logical palette
  134. extern BOOL      bPalDevice;     // palette device flag
  135.  
  136. // **TODO**  For NON-MDI applications, uncomment line 1 below and comment
  137. //           line 2.  For MDI applications, uncomment line 2 below, comment
  138. //           line 1, and then define hwndMDIClient as a global variable in
  139. //           INIT.C
  140. #define hwndMDIClient NULL        /* (1) Stub for NON-MDI applications. */
  141. // extern HWND hwndMDIClient;     /* (2) For MDI applications.          */
  142.  
  143.  
  144. //-------------------------------------------------------------------------
  145. // Message and command dispatch infrastructure.  The following type
  146. // definitions and functions are used by the message and command dispatching
  147. // mechanism and do not need to be changed.
  148.  
  149.     // Function pointer prototype for message handling functions.
  150. typedef LRESULT (*PFNMSG)(HWND, UINT, WPARAM, LPARAM);
  151.  
  152.     // Function pointer prototype for command handling functions.
  153. typedef LRESULT (*PFNCMD)(HWND, WORD, WORD, HWND);
  154.  
  155.     // Enumerated type used to determine which default window procedure
  156.     // should be called by the message- and command-dispatching mechanism
  157.     // if a message or command is not handled explicitly.
  158. typedef enum
  159. {
  160.    edwpNone,            // Do not call any default procedure.
  161.    edwpWindow,          // Call DefWindowProc.
  162.    edwpDialog,          // Call DefDlgProc (This should be used only for
  163.                         // custom dialogs - standard dialog use edwpNone).
  164.    edwpMDIChild,        // Call DefMDIChildProc.
  165.    edwpMDIFrame         // Call DefFrameProc.
  166. } EDWP;                // Enumeration for Default Window Procedures
  167.  
  168.     // This structure maps messages to message handling functions.
  169. typedef struct _MSD
  170. {
  171.     UINT   uMessage;
  172.     PFNMSG pfnmsg;
  173. } MSD;                 // MeSsage Dispatch structure
  174.  
  175.     // This structure contains all of the information that a window
  176.     // procedure passes to DispMessage in order to define the message
  177.     // dispatching behavior for the window.
  178. typedef struct _MSDI
  179. {
  180.     int  cmsd;          // Number of message dispatch structs in rgmsd
  181.     MSD *rgmsd;         // Table of message dispatch structures
  182.     EDWP edwp;          // Type of default window handler needed.
  183. } MSDI, FAR *LPMSDI;   // MeSsage Dipatch Information
  184.  
  185.     // This structure maps command IDs to command handling functions.
  186. typedef struct _CMD
  187. {
  188.     WORD   wCommand;
  189.     PFNCMD pfncmd;
  190. } CMD;                 // CoMmand Dispatch structure
  191.  
  192.     // This structure contains all of the information that a command
  193.     // message procedure passes to DispCommand in order to define the
  194.     // command dispatching behavior for the window.
  195. typedef struct _CMDI
  196. {
  197.     int  ccmd;          // Number of command dispatch structs in rgcmd
  198.     CMD *rgcmd;         // Table of command dispatch structures
  199.     EDWP edwp;          // Type of default window handler needed.
  200. } CMDI, FAR *LPCMDI;   // CoMmand Dispatch Information
  201.  
  202.     // Message and command dispatching functions.  They look up messages
  203.     // and commands in the dispatch tables and call the appropriate handler
  204.     // function.
  205. LRESULT DispMessage(LPMSDI, HWND, UINT, WPARAM, LPARAM);
  206. LRESULT DispCommand(LPCMDI, HWND, WPARAM, LPARAM);
  207.  
  208.     // Message dispatch information for the main window
  209. extern MSDI msdiMain;
  210.     // Command dispatch information for the main window
  211. extern CMDI cmdiMain;
  212.